package com.atguigu.tingshu.order.service;

import com.atguigu.tingshu.model.order.OrderInfo;
import com.atguigu.tingshu.vo.order.OrderInfoVo;
import com.atguigu.tingshu.vo.order.TradeVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Map;

public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * 订单渲染 也就是订单结算
     * @param userId 用户id
     * @param tradeVo 订单信息
     * @return 交易信息 OrderInfoVO
     */
    OrderInfoVo trade(Long userId, TradeVo tradeVo);
    //订单提交 处理 余额支付

    /**
     * 提交订单 包含余额支付
     * @param userId 用户id
     * @param orderInfoVo 订单信息
     * @return 订单号
     */
    Map<String, String> submitOrder(Long userId, OrderInfoVo orderInfoVo);

    /**
     * 保存订单明细
     * @param userId 用户id
     * @param orderInfoVo 订单信息
     * @return 订单明细
     */
    OrderInfo saveOrder(Long userId, OrderInfoVo orderInfoVo);

    /**
     * 查询当前用户订单分页信息
     * @param pageInfo 分页信息
     * @param userId 用户id
     * @return 当前用户的订单分页信息
     */
    Page<OrderInfo> getUserOrderByPage(Page<OrderInfo> pageInfo, Long userId);


    /**
     * 获取订单的信息 ->查看订单
     * @param userId 用户id
     * @param orderNo 订单号
     * @return 订单详情
     */
    OrderInfo getOrderInfo(Long userId, String orderNo);
    //延迟消息

    /**
     * 发送延迟消息 ->延迟关闭订单
     * @param id 订单id
     */
    void sendDelayMessage(Long id);
    //取消订单
    void orderCancel(long l);
}
